/**
 * 给你一个非负整数数组 nums ，你最初位于数组的第一个位置。
 *
 * 数组中的每个元素代表你在该位置可以跳跃的最大长度。
 *
 * 你的目标是使用最少的跳跃次数到达数组的最后一个位置。
 *
 * 假设你总是可以到达数组的最后一个位置。
 *
 *题解https://labuladong.gitee.io/algo/3/29/102/
 */
class JumpTwo {
    public int jump(int[] nums) {
        int count=0;
        int n=nums.length;
        int furthest=0;
        int end=0;
        for(int i=0;i<n-1;i++) {
            furthest=Math.max(nums[i]+i,furthest);
            if(end==i) {
                count++;
                end=furthest;
            }
        }
        return count;
    }
    
}